# Docker

## 📘 Resources
- [Docker GitHub](https://github.com/docker)
- [wsargent/docker-cheat-sheet](https://github.com/wsargent/docker-cheat-sheet) - Docker Cheat Sheet
- [prakhar1989/docker-curriculum](https://docker-curriculum.com) - 🐬 A comprehensive tutorial on getting started with Docker! - docker-curriculum.com
- [veggiemonk/awesome-docker](https://github.com/veggiemonk/awesome-docker) - 🐳 A curated list of Docker resources and projects
- [docker/awesome-compose](https://github.com/docker/awesome-compose) - Awesome Docker Compose samples
- [Pradumnasaraf/DevOps](https://github.com/Pradumnasaraf/DevOps) - This repo contains all my learning related to DevOps

## 📝 Articles
- [Get to Know Docker's Ecosystem](https://nickjanetakis.com/blog/get-to-know-dockers-ecosystem#docker-daemon)
- [Understanding How the Docker Daemon and Docker CLI Work Together](https://nickjanetakis.com/blog/understanding-how-the-docker-daemon-and-docker-cli-work-together)
- [How to build and push Docker image with GitHub actions?](https://event-driven.io/en/how_to_buid_and_push_docker_image_with_github_actions/)
- [Docker Tip #73: Connecting to a Remote Docker Daemon](https://nickjanetakis.com/blog/docker-tip-73-connecting-to-a-remote-docker-daemon)
- [How to build an optimal Docker image for your application?](https://event-driven.io/en/how_to_buid_an_optimal_docker_image_for_your_application/) ⭐
- [Optimising ASP.NET Core apps in Docker - avoiding manually copying csproj files](https://andrewlock.net/optimising-asp-net-core-apps-in-docker-avoiding-manually-copying-csproj-files/) ⭐
- [Exploring the .NET Core Docker files: dotnet vs aspnetcore vs aspnetcore-build](https://andrewlock.net/exploring-the-net-core-docker-files-dotnet-vs-aspnetcore-vs-aspnetcore-build/) ⭐
- [Exploring the .NET Core 2.1 Docker files (updated): dotnet:runtime vs aspnetcore-runtime vs sdk](https://andrewlock.net/exploring-the-net-core-2-1-docker-files-dotnet-runtime-vs-aspnetcore-runtime-vs-sdk/) ⭐
- [Building ASP.NET Core apps using Cake in Docker](https://andrewlock.net/building-asp-net-core-apps-using-cake-in-docker/)
- [Using Docker Hub to automatically build a Docker image for ASP.NET Core apps](https://andrewlock.net/using-docker-hub-to-automatically-build-a-docker-image-for-asp-net-core-apps/)
- [DOCKER FOR .NET DEVELOPERS (PART 1)](https://www.stevejgordon.co.uk/docker-dotnet-developers-part-1)
- [Dockerizing ASP.NET Core Application With Dockerfiles](https://code-maze.com/aspnetcore-app-dockerfiles/)
- [Get Started Building Microservices with ASP.NET Core and Docker in Visual Studio Code](https://fullstackmark.com/post/12/get-started-building-microservices-with-asp.net-core-and-docker-in-visual-studio-code)
- [Optimising .NET Core Docker images](https://benfoster.io/blog/optimising-dotnet-docker-images/)
- [Defining your multi-container application with docker-compose.yml](https://docs.microsoft.com/en-us/dotnet/architecture/microservices/multi-container-microservice-net-applications/multi-container-applications-docker-compose)
- [Some useful Docker commands make your life easier](https://dev.to/moesmp/some-useful-docker-command-4ehi)
- [Deploy a Docker based ASP.NET Core app to Azure](https://www.yogihosting.com/docker-aspnet-core-azure/)
- [Create first ASP.NET Core App in a Docker Container](https://www.yogihosting.com/docker-aspnet-core-app/)
- [Multi-Container ASP.NET Core App with Docker Compose](https://www.yogihosting.com/docker-compose-aspnet-core/)
- [How Visual Studio builds containerized apps](https://docs.microsoft.com/en-us/visualstudio/containers/container-build?view=vs-2019)
- [Creating Docker multi-arch images for ARM64 from Windows](https://andrewlock.net/creating-multi-arch-docker-images-for-arm64-from-windows/)
- [6 Things To Know When Dockerizing Microsoft .NET Apps in Production](https://levelup.gitconnected.com/6-things-to-know-when-dockerizing-microsoft-net-apps-in-production-45b8c27a41b0)
- [Beginning Docker](https://sookocheff.com/post/docker/beginning-docker/)
- [Docker Series](https://code-maze.com/docker-series/)
- [Dockerize an ASP .NET Core Microservice and RabbitMQ](https://www.programmingwithwolfgang.com/dockerize-an-asp-net-core-microservice-and-rabbitmq)
- [ASP .NET Core with HTTPS in Docker](https://www.programmingwithwolfgang.com/asp-net-core-with-https-in-docker)
- [Set up Docker-Compose for ASP .NET Core 3.1 Microservices](https://www.programmingwithwolfgang.com/set-up-docker-compose-for-asp-net-core-3-1-microservices)
- [Hosting ASP.NET Core images with Docker over HTTPS](https://docs.microsoft.com/en-us/aspnet/core/security/docker-https)
- [ASP.NET Core APP with HTTPS in Docker](https://www.yogihosting.com/docker-https-aspnet-core/)
- [How to Pass Environment Variables to Docker Containers](https://www.cloudsavvyit.com/14081/how-to-pass-environment-variables-to-docker-containers/)
- [Step by step guide on utilising Docker Compose with Asp.Net Core, SQL Server](https://dev.to/moe23/step-by-step-guide-on-utilising-docker-compose-with-asp-net-core-sql-server-2e54)
- [CRUD Operations in ASP.NET Core and SQL Server with Docker](https://www.yogihosting.com/docker-aspnet-core-sql-server-crud/)
- [Docker SQL bind: An attempt was made to access a socket in a way forbidden by its access permissions](https://stackoverflow.com/questions/57316744/docker-sql-bind-an-attempt-was-made-to-access-a-socket-in-a-way-forbidden-by-it)
- [ASP.NET Docker Gotchas and Workarounds](https://khalidabuhakmeh.com/aspnet-docker-gotchas-and-workarounds)
- [The Microsoft author signing certificate will be updated as soon as November 1st, 2020](https://devblogs.microsoft.com/nuget/microsoft-author-signing-certificate-update/)
- [5 ways to change time in Docker container](https://bobcares.com/blog/change-time-in-docker-container/)
- [Change TimeZone in Docker and OCI compliant Containers](https://mohitgoyal.co/2021/03/02/change-timezone-in-docker-and-oci-compliant-containers/)
- [Attach to a running container](https://code.visualstudio.com/docs/remote/attach-container)
- [Create a development container](https://code.visualstudio.com/docs/remote/create-dev-container)
- [Debugging ASP.NET Core apps in a local Docker container `Rider`](https://blog.jetbrains.com/dotnet/2018/07/18/debugging-asp-net-core-apps-local-docker-container/)
- [Ports are not available: listen tcp 0.0.0.0/50070: bind: An attempt was made to access a socket in a way forbidden by its access permissions](https://stackoverflow.com/questions/65272764/ports-are-not-available-listen-tcp-0-0-0-0-50070-bind-an-attempt-was-made-to)
- [Optimising ASP.NET Core apps in Docker - avoiding manually copying csproj files](https://andrewlock.net/optimising-asp-net-core-apps-in-docker-avoiding-manually-copying-csproj-files/)
- [Optimising ASP.NET Core apps in Docker - avoiding manually copying csproj files (Part 2)](https://andrewlock.net/optimising-asp-net-core-apps-in-docker-avoiding-manually-copying-csproj-files-part-2/)
- [Setting Up Docker for Windows and WSL to Work Flawlessly](https://nickjanetakis.com/blog/setting-up-docker-for-windows-and-wsl-to-work-flawlessly)
- [Announcing built-in container support for the .NET SDK](https://devblogs.microsoft.com/dotnet/announcing-builtin-container-support-for-the-dotnet-sdk/)
- [Linting a .NET 6 app Dockerfile using Hadolint, dockerfile_lint and Azure Pipelines](https://www.mytechramblings.com/posts/linting-a-dotnet-app-dockerfile-using-hadolint-dockerfile-lint-and-azure-pipelines/)
- [Docker build caching for .NET applications done right with dotnet-subset](https://blog.nimbleways.com/docker-build-caching-for-dotnet-applications-done-right-with-dotnet-subset/)
- [Developing ASP.NET Core apps in Docker - Live Recompilation](https://tymisko.hashnode.dev/developing-aspnet-core-apps-in-docker-live-recompilation)
- [.NET 6 is now in Ubuntu 22.04](https://devblogs.microsoft.com/dotnet/dotnet-6-is-now-in-ubuntu-2204/)
- [Announcing built-in container support for the .NET SDK](https://devblogs.microsoft.com/dotnet/announcing-builtin-container-support-for-the-dotnet-sdk/)
- [Tutorial: Containerize a .NET app](https://learn.microsoft.com/en-us/dotnet/core/docker/build-container?tabs=windows)
- [Containerize a .NET app with dotnet publish](https://learn.microsoft.com/en-us/dotnet/core/docker/publish-as-container)
- [.NET 7 SDK built-in container support and Ubuntu Chiseled](https://laurentkempe.com/2022/11/14/dotnet-7-sdk-built-in-container-support-and-ubuntu-chiseled/)
- [Experimenting with .NET 7, WASM, and WASI on Docker](https://laurentkempe.com/2022/10/31/experimenting-with-dotnet-7-wasm-and-wasi-on-docker/)
- [Trying out the built-in container support for the .NET SDK](https://www.mytechramblings.com/posts/trying-out-the-built-in-container-support-for-the-dotnet-7-sdk/)
- [Docker import/export vs. load/save](https://pspdfkit.com/blog/2019/docker-import-export-vs-load-save/)
- [Publishing Images With GitHub Actions](https://www.kenmuse.com/blog/publishing-images-with-github-actions/)
- [Creating a generalised Docker image for building ASP.NET Core apps using ONBUILD](https://andrewlock.net/creating-a-generalised-docker-image-for-building-asp-net-core-apps-using-onbuild/) ⭐
- [Optimizing your .NET Core Docker image size with multi-stage builds](https://medium.com/@chrislewisdev/optimizing-your-net-core-docker-image-size-with-multi-stage-builds-778c577121d) ⭐⭐
- [Multi-stage builds](https://docs.docker.com/build/building/multi-stage/) ⭐⭐
- [Docker Tutorial – Introduction & Getting Started With Docker](https://spacelift.io/blog/docker-tutorial)
- [Docker Build Process for .NET Applications](https://marcroussy.com/2020/05/01/docker-build-process-for-dotnet/) ⭐
- [Understanding the Docker Build Context (Why You Should Use Dockerignore)](https://www.howtogeek.com/devops/understanding-the-docker-build-context-why-you-should-use-dockerignore/)
- [How to Debug Dockerized .NET Core Apps in VS Code](https://www.freecodecamp.org/news/how-to-debug-dockerized-net-core-apps-in-vs-code/) ⭐
- [Demystifying Docker: .NET 6 on Docker + Docker Debugging](https://amelspahic.com/net-6-on-docker-with-debugging) ⭐
- [docker `network create`](https://docs.docker.com/engine/reference/commandline/network_create/) ⭐
- [DEBUGGING YOUR .NET CORE IN DOCKER APPLICATIONS WITH VS CODE](https://www.aaron-powell.com/posts/2019-04-04-debugging-dotnet-in-docker-with-vscode/)  ⭐
- [Attaching to remote processes](https://github.com/OmniSharp/omnisharp-vscode/wiki/Attaching-to-remote-processes)
- [How to debug a .NET Core app in Docker with VSCode](https://www.richard-banks.org/2018/07/debugging-core-in-docker.html) ⭐⭐
- [Get started with Docker remote containers on WSL 2](https://learn.microsoft.com/en-us/windows/wsl/tutorials/wsl-containers) ⭐
- [Docker Desktop WSL 2 backend on Windows](https://docs.docker.com/desktop/windows/wsl/) ⭐
- [How to configure Docker Desktop to work with the WSL](https://tutorials.releaseworksacademy.com/learn/how-to-configure-docker-desktop-to-work-with-the-wsl.html)
- [Setting Up Docker for Windows and WSL to Work Flawlessly](https://nickjanetakis.com/blog/setting-up-docker-for-windows-and-wsl-to-work-flawlessly) ⭐
- [How to properly override the ENTRYPOINT using docker run](https://oprea.rocks/blog/how-to-properly-override-the-entrypoint-using-docker-run)
- [Docker RUN vs CMD vs ENTRYPOINT](https://codewithyury.com/docker-run-vs-cmd-vs-entrypoint/) ⭐
- [Running a Docker container as a non-root user](https://medium.com/redbubble/running-a-docker-container-as-a-non-root-user-7d2e00f8ee15)
- [Using Docker Buildkit --mount=type=cache for caching Nuget packages for .NET 5 dockerfile](https://stackoverflow.com/questions/69464184/using-docker-buildkit-mount-type-cache-for-caching-nuget-packages-for-net-5-d)
- [Optimizing builds with cache management](https://docs.docker.com/build/cache/) ⭐
- [Best practices for writing Dockerfiles](https://docs.docker.com/develop/develop-images/dockerfile_best-practices) ⭐
- [Speed up pip downloads in Docker with BuildKit’s new caching](https://pythonspeed.com/articles/docker-cache-pip-downloads/) ⭐
- [How to Keep Docker Container Running for Debugging](https://devopscube.com/keep-docker-container-running/)
- [Running Docker Containers Indefinitely](https://www.baeldung.com/ops/running-docker-containers-indefinitely)
- [Removing unused intermediate docker images automatically](https://medium.com/@cikupin/removing-unused-intermediate-docker-images-automatically-25e453c514ea)
- [Enforce HTTPS in ASP.NET Core](https://learn.microsoft.com/en-us/aspnet/core/security/enforcing-ssl)
- [Hosting ASP.NET Core images with Docker over HTTPS](https://learn.microsoft.com/en-us/aspnet/core/security/docker-https)
- [Using Docker Secrets during Development](https://blog.mikesir87.io/2017/05/using-docker-secrets-during-development/)
- [How to Keep Docker Secrets When Working with Sensitive Data?](https://www.cherryservers.com/blog/how-to-keep-docker-secrets-when-working-with-sensitive-data)
- [Docker and .Net — Environment variables and appsettings.json](https://levelup.gitconnected.com/docker-environment-variables-appsettings-json-net-bdac052bf3db)
- [Hot-Reload .NET Configuration in Kubernetes with ConfigMaps](https://www.thorsten-hans.com/hot-reload-net-configuration-in-kubernetes-with-configmaps/) ⭐
- [Secure your .NET cloud apps with rootless Linux Containers](https://devblogs.microsoft.com/dotnet/securing-containers-with-rootless/)
- [Testing Chiseled Ubuntu container images with .NET](https://www.mytechramblings.com/posts/testing-chiseled-ubuntu-containers-with-dotnet/)
- [Creating a Private Local Docker Registry in 5 Minutes](https://dev.to/docker/creating-a-private-local-docker-registry-in-5-minutes-2dnl)
- [4 Easy Steps to Set Up a Private Docker Registry on Ubuntu](https://gcore.com/learning/4-easy-steps-to-set-up-a-private-docker-registry-on-ubuntu/)
- [Running Artifactory 7 and Postgres using Docker Compose V2](https://wangler.io/running-artifactory-7-using-docker-compose-v2/)
- [Deploying JFrog Container Registry within a Dockerized infrastructure](https://medium.com/@tomer.klein/deploying-jfrog-container-registry-within-a-dockerized-infrastructure-a3f67328bd27)
- [Create a Private Docker Registry with Nexus](https://www.ivankrizsan.se/2016/06/09/create-a-private-docker-registry/)
- [Streamline your container build and publish with .NET 8](https://devblogs.microsoft.com/dotnet/streamline-container-build-dotnet-8/)

## 📹 Videos
- [Deploy a .NET Core API with Docker (Step-by-Step)](https://www.youtube.com/watch?v=f0lMGPB10bM)
- [Docker Tutorial for Beginners [FULL COURSE in 3 Hours](https://www.youtube.com/watch?v=3c-iBn73dDE)
- [How to push a container image to a Docker Repo | Azure Tips and Tricks](https://www.youtube.com/watch?v=r_tGl4zF1ZQ)
- [Dockerize .NET 6 in 10 Minutes](https://www.youtube.com/watch?v=3s-RfwvijpY)
- [Docker networking is CRAZY!! (you NEED to learn it)](https://www.youtube.com/watch?v=bKFMS5C4CG0)
- [Why you no longer need a Dockerfile in .NET 7](https://www.youtube.com/watch?v=BV_f2XnqlRE)
- [Debugging .NET Core in Docker with VSCode](https://www.youtube.com/watch?v=ds2bud0ZYTY) ⭐

## 📦 Libraries
- [`wagoodman/dive`](https://github.com/wagoodman/dive) - A tool for exploring each layer in a docker image
- [`hadolint/hadolint`](https://github.com/hadolint/hadolint) - Dockerfile linter, validate inline bash, written in Haskell
- [`projectatomic/dockerfile_lint`](https://github.com/projectatomic/dockerfile_lint)
- [`nicolaka/netshoot`](https://github.com/nicolaka/netshoot) - a Docker + Kubernetes network trouble-shooting swiss-army container
- [`mariotoffia/FluentDocker`](https://github.com/mariotoffia/FluentDocker) - Commands, Services and Fluent API for docker, docker-compose & docker-machine, for win/mac/linux and native docker in c#
- [`docker-slim/docker-slim`](https://github.com/docker-slim/docker-slim) - DockerSlim (docker-slim): Don't change anything in your Docker container image and minify it by up to 30x (and for compiled languages even more) making it secure too! (free and open source)
- [`mariotoffia/FluentDocker`](https://github.com/mariotoffia/FluentDocker) - Use docker, docker-compose local and remote in tests and your .NET core/full framework apps via a FluentAPI
- [`jesseduffield/lazydocker`](https://github.com/jesseduffield/lazydocker) - The lazier way to manage everything docker
- [`worstcase/blockade`](https://github.com/worstcase/blockade) - Docker-based utility for testing network failures and partitions in distributed applications
- [`hadolint/hadolint`](https://github.com/hadolint/hadolint) - Dockerfile linter, validate inline bash, written in Haskell
- [`tmds/build-image`](https://github.com/tmds/build-image) - Containerize .NET apps without writing Dockerfiles.
- [`Wowu/docker-rollout`](https://github.com/Wowu/docker-rollout) - Zero Downtime Deployment for Docker Compose
- [`kubernetes/kompose`](https://github.com/kubernetes/kompose) - Convert Compose to Kubernetes
- [`dokku/dokku`](https://github.com/dokku/dokku) - A docker-powered PaaS that helps you build and manage the lifecycle of applications

## 🚀 Samples
- [jbw/TooBigToFailBurgerShop](https://github.com/jbw/TooBigToFailBurgerShop/tree/develop/src/services/Ordering/Ordering.API) - .NET Microservice Reference Application. It's also an over-engineered burger shop!
- [VasilisGaitanidis/master-containerized-microservices](https://github.com/VasilisGaitanidis/master-containerized-microservices) - This repo contains a sample application based on a fictional eCommerce. The primary goal of this sample is to demonstrate several software-architecture concepts like: Clean Architecture, Microservices, CQRS, Event Sourcing, Publish-Subscribe Architecture, Domain Driven Design (DDD). Currently this is a work in progress.
- [MesutAtasoy/Joker](https://github.com/MesutAtasoy/Joker) - An example of microservices container based application which implemented different approaches within each microservice (DDD, CQRS, Simple CRUD)
- [vany0114/microservices-dotnetcore-docker-sf-k8s](https://github.com/vany0114/microservices-dotnetcore-docker-sf-k8s) - Shows an approach to work with a microservices based architecture using .Net Core, Docker, and Azure Service Fabric/Kubernetes, applying Domain Driven Design (DDD) and Comand and Query Responsibility Segregation (CQRS) and other patterns.
- [mmacneil/ASPNETCoreDockerMicroservices](https://github.com/mmacneil/ASPNETCoreDockerMicroservices) - Sample project for getting off the ground with ASP.NET Core, Docker and Microservices based on the tutorial: https://fullstackmark.com/post/12/get-started-building-microservices-with-asp.net-core-and-docker-in-visual-studio-code
- [WolfgangOfner/MicroserviceDemo](https://github.com/WolfgangOfner/MicroserviceDemo) - This is a demo with two ASP .NET 5 microservices using RabbitMQ and Docker
- [twzhangyang/RestAirline](https://github.com/twzhangyang/RestAirline) - DDD+CQRS+EventSourcing+Hypermedia API+ASP.NET Core 3.1+Masstransit+terraform+docker+k8s
- [madslundt/NetCoreMicroservicesSample](https://github.com/madslundt/NetCoreMicroservicesSample/tree/master/Compose) - Sample using micro services in .NET Core 3.1 Focusing on clean code
- [baotoq/micro-commerce](https://github.com/baotoq/micro-commerce/blob/master/src/Services/Catalog/MicroCommerce.Catalog.API/Dockerfile) - React, Nextjs, ASP.NET Core 5.0, IdentityServer, Dapr, Azure pipeline, K8S, SonarQube
- [oskardudycz/EventSourcing.NetCore/Dockerfile](https://github.com/oskardudycz/EventSourcing.NetCore/blob/main/Dockerfile)
- [vietnam-devs/coolstore-microservices/deploys/dockers](https://github.com/vietnam-devs/coolstore-microservices/tree/main/deploys/dockers)
- [vietnam-devs/coolstore-microservices/Dockerfile](https://github.com/vietnam-devs/coolstore-microservices/blob/main/src/Services/ProductCatalog/ProductCatalogService.Api/Dockerfile)
- [thangchung/clean-architecture-dotnet/Dockerfile](https://github.com/thangchung/clean-architecture-dotnet/blob/main/samples/Product/ProductService.Api/Dockerfile)
- [laurentkempe/ChiseledDocker](https://github.com/laurentkempe/ChiseledDocker)
- [richlander/container-workshop](https://github.com/richlander/container-workshop) - Documents fundamental .NET Container workflows

## Registries
- [distribution/distribution](https://github.com/distribution/distribution) - The toolkit to pack, ship, store, and deliver container content
- [Quay.io](https://quay.io/)
- [GitHub Container Registry](https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-container-registry)
- [Docker Container Registry](https://hub.docker.com/)
- [JFrog Docker Registry](https://jfrog.com/help/r/jfrog-artifactory-documentation/set-up-jfrog-container-registry-self-hosted-version)
- [sonatype-nexus-oss](https://www.sonatype.com/products/sonatype-nexus-oss)